package cmd

import (
	"fmt"
	"regexp"
	"strings"
)
var rt = regexp.MustCompile(`^(\d{4})-\d{2}-(\d{2})$`)
type Command struct {
	Org         string
	AccessToken string
	AnnPrefix   string
	AnnSuffix   int64
	StartTime   string
	EndTime     string
}

func CmdStart() (cmd Command){
	fmt.Println("即将开始抓取issue,请按提示输入相应内容并以回车符结束输入！")
	fmt.Println("请输入要抓取的gitee组织名，例如 src-openeuler :")
	var org,at,ap,st,et string
	var as int64
	for {
		count, err := fmt.Scanln(&org)
		if err != nil || count == 0 || strings.TrimSpace(org) == "" {
			fmt.Println("非法的输入，请重新输入gitee组织名:")
		} else {
			break
		}

	}
	fmt.Println("请输入您的gitee AccessToken :")
	for {
		count, err := fmt.Scanln(&at)
		if err != nil || count == 0 || strings.TrimSpace(at) == "" {
			fmt.Println("非法的输入，请重新输入gitee AccessToken:")
		} else {
			break
		}
	}
	fmt.Println("请输入生成的安全公告名前缀，例如 OpenEuler-SA-2020-  :")
	for {
		count, err := fmt.Scanln(&ap)
		if err != nil || count == 0 || strings.TrimSpace(ap) == "" {
			fmt.Println("非法的输入，请重新输入生成的安全公告名前缀:")
		} else {
			break
		}
	}
	fmt.Println("请输入生成的安全公告名后缀(纯数字 例如：1001):")
	for {
		count, err := fmt.Scanln(&as)
		if err != nil || count == 0  {
			fmt.Println("非法的输入，请重新输入生成的安全公告名后缀:")
		} else {
			break
		}
	}
	fmt.Println("请输入抓取的起始时间，例如 2020-01-01:")
	for {
		count, err := fmt.Scanln(&st)
		if err != nil || count == 0 || st == "" {
			fmt.Println("非法的输入，请重新输入抓取的起始时间:")
		} else {
			find := rt.Find([]byte(st))
			if string(find)=="" {
				fmt.Println("非法的输入，请重新输入抓取的起始时间:")
			}else {
				break
			}

		}
	}
	fmt.Println("请输入抓取的截至时间，例如 2020-01-01:")
	for {
		count, err := fmt.Scanln(&et)
		if err != nil || count == 0 || et == "" {
			fmt.Println("非法的输入，请重新输入抓取的起始时间:")
		} else {
			find := rt.Find([]byte(et))
			if string(find)=="" {
				fmt.Println("非法的输入，请重新输入抓取的起始时间:")
			}else {
				break
			}

		}
	}
	c := Command{org,at,ap,as,st,et}
	return c
}

func CmdEnd()  {
	fmt.Println("数据抓取完成，请输入任意字符结束应用...")
	var quit string
	_, _ = fmt.Scan(&quit)
}
